package sisgeroupas.dao;


import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.ArrayList;
import javax.swing.JOptionPane;
import sisgeroupas.factory.ConnectionBD;
import sisgeroupas.model.ModelCliente;
import sisgeroupas.model.ModelVenda;


/**
 *
 * @author root
 */
public class VendaDao
{
    private Connection connection;
   /*int id;
   String nome;
   String sexo;
   String dataNascimento;
    */
   int idGerado;
    public VendaDao()
    {
        this.connection = new ConnectionBD().getConnection();
    }
    public void inserir(ModelVenda venda)
    {
        String sql = "INSERT INTO venda(idCliente,dataVenda,valorTotal) VALUES(?,?,?)";
        
        try
        {
            PreparedStatement stmt = connection.prepareStatement(sql);
            
            stmt.setInt(1,venda.getIdCliente()); 
            stmt.setString(2,venda.getDataVenda());
            stmt.setFloat(3,venda.getValorTotal()); 
            
           
            stmt.execute();
            stmt.close();
        }
        
        catch(SQLException u)
        {
            JOptionPane.showMessageDialog(null,"Erro SQL: " + u.getMessage());  
            throw new RuntimeException(u);
            
        }
        
    }
        
    
    
    
  
    
    public void apagar(ModelVenda venda)
     {
        String sql = "DELETE FROM venda WHERE idVenda = ?";
        //JOptionPane.showMessageDialog(null,"Executou sql");
        try
        {
            //JOptionPane.showMessageDialog(null,"Entrou no try");
            PreparedStatement stmt = connection.prepareStatement(sql);
            //JOptionPane.showMessageDialog(null,"Executou sql");
            
            stmt.setInt(1, venda.getIdVenda());
                                 
            stmt.execute();
            stmt.close();
        }
        catch(SQLException u)
        {
            JOptionPane.showMessageDialog(null,"Erro SQL: " + u);  
            throw new RuntimeException(u);
        }
    }
    public int retornaUltimoId()
     {
         //String sql = new String();
         int resultado=0 ;
        
        try
        {
            //JOptionPane.showMessageDialog(null,"Entrou no try");
            PreparedStatement stmt = this.connection.prepareStatement("SELECT  max(idVenda) FROM venda");
                    
            
            
            ResultSet rs= stmt.executeQuery();;
            
            while (rs.next()) {  
            resultado = rs.getInt(1);
          
            }
                                 
            stmt.execute();
            stmt.close();
            rs.close();
        }
        catch(SQLException u)
        {
            JOptionPane.showMessageDialog(null,"Erro SQL: " + u);  
            throw new RuntimeException(u.getMessage());
        }
        return resultado;   
    }
    
     public ArrayList<ModelVenda> pesquisar(ModelVenda venda)
     {
         //String sql = new String();
         ArrayList<ModelVenda> resultados = new ArrayList<ModelVenda>();
        
        try
        {
            //JOptionPane.showMessageDialog(null,"Entrou no try");
            PreparedStatement stmt = this.connection.prepareStatement("SELECT * FROM venda where dataVenda like "+"'%" + venda.getDataVenda() + "%'");
                    
            
            //Aqui coloca apenas uma variavel que usou para pesquisar ou 2 se for o caso
            //stmt.setString(1, cadastro.getNome());
            
            ResultSet rs= stmt.executeQuery();;
            
            while (rs.next()) {  
            ModelVenda temp = new ModelVenda();  
            // pega todos os atributos da cliente
            temp.setIdVenda(rs.getInt("idVenda"));
            temp.setIdCliente(rs.getInt("idCliente"));
            temp.setDataVenda(rs.getString("dataVenda"));
            temp.setValorTotal(rs.getFloat("valorTotal")); 
            
            resultados.add(temp);
            //JOptionPane.showMessageDialog(null, temp.getNome());
        }
                                 
            stmt.execute();
            stmt.close();
            rs.close();
        }
        catch(SQLException u)
        {
            JOptionPane.showMessageDialog(null,"Erro SQL: " + u);  
            throw new RuntimeException(u.getMessage());
        }
        return resultados;
    }
     public void atualizar(ModelVenda venda)
    {
        
        String sql = "UPDATE  venda set idCliente=?,dataVenda=?, valorTotal=? where idVenda=? ";
        try
        {
            PreparedStatement stmt = connection.prepareStatement(sql);
            
            
            
            stmt.setInt(1,venda.getIdCliente());
            stmt.setString(2,venda.getDataVenda());
            stmt.setFloat(3,venda.getValorTotal());
            stmt.setInt(4,venda.getIdVenda());
            
            stmt.execute();
            stmt.close();
        }
        catch(SQLException u)
        {
            JOptionPane.showMessageDialog(null,"Erro SQL: " + u);  
            throw new RuntimeException(u);
            //JOptionPane.showMessageDialog(null, "Erro SQL:" + u);
        }
    }
}